<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>BrentOptimizer (Apache Commons Math 3.6.1 API)</title>
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="BrentOptimizer (Apache Commons Math 3.6.1 API)";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/BrentOptimizer.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/commons/math3/optim/univariate/BracketFinder.html" title="class in org.apache.commons.math3.optim.univariate"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../../org/apache/commons/math3/optim/univariate/MultiStartUnivariateOptimizer.html" title="class in org.apache.commons.math3.optim.univariate"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/commons/math3/optim/univariate/BrentOptimizer.html" target="_top">Frames</a></li>
<li><a href="BrentOptimizer.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#fields_inherited_from_class_org.apache.commons.math3.optim.BaseOptimizer">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.commons.math3.optim.univariate</div>
<h2 title="Class BrentOptimizer" class="title">Class BrentOptimizer</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../../../org/apache/commons/math3/optim/BaseOptimizer.html" title="class in org.apache.commons.math3.optim">org.apache.commons.math3.optim.BaseOptimizer</a>&lt;<a href="../../../../../../org/apache/commons/math3/optim/univariate/UnivariatePointValuePair.html" title="class in org.apache.commons.math3.optim.univariate">UnivariatePointValuePair</a>&gt;</li>
<li>
<ul class="inheritance">
<li><a href="../../../../../../org/apache/commons/math3/optim/univariate/UnivariateOptimizer.html" title="class in org.apache.commons.math3.optim.univariate">org.apache.commons.math3.optim.univariate.UnivariateOptimizer</a></li>
<li>
<ul class="inheritance">
<li>org.apache.commons.math3.optim.univariate.BrentOptimizer</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="strong">BrentOptimizer</span>
extends <a href="../../../../../../org/apache/commons/math3/optim/univariate/UnivariateOptimizer.html" title="class in org.apache.commons.math3.optim.univariate">UnivariateOptimizer</a></pre>
<div class="block">For a function defined on some interval <code>(lo, hi)</code>, this class
 finds an approximation <code>x</code> to the point at which the function
 attains its minimum.
 It implements Richard Brent's algorithm (from his book "Algorithms for
 Minimization without Derivatives", p. 79) for finding minima of real
 univariate functions.
 <br/>
 This code is an adaptation, partly based on the Python code from SciPy
 (module "optimize.py" v0.5); the original algorithm is also modified
 <ul>
  <li>to use an initial guess provided by the user,</li>
  <li>to ensure that the best point encountered is the one returned.</li>
 </ul></div>
<dl><dt><span class="strong">Since:</span></dt>
  <dd>2.0</dd></dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_summary">
<!--   -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="fields_inherited_from_class_org.apache.commons.math3.optim.BaseOptimizer">
<!--   -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.commons.math3.optim.<a href="../../../../../../org/apache/commons/math3/optim/BaseOptimizer.html" title="class in org.apache.commons.math3.optim">BaseOptimizer</a></h3>
<code><a href="../../../../../../org/apache/commons/math3/optim/BaseOptimizer.html#evaluations">evaluations</a>, <a href="../../../../../../org/apache/commons/math3/optim/BaseOptimizer.html#iterations">iterations</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../../../org/apache/commons/math3/optim/univariate/BrentOptimizer.html#BrentOptimizer(double,%20double)">BrentOptimizer</a></strong>(double&nbsp;rel,
              double&nbsp;abs)</code>
<div class="block">The arguments are used for implementing the original stopping criterion
 of Brent's algorithm.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../../../../org/apache/commons/math3/optim/univariate/BrentOptimizer.html#BrentOptimizer(double,%20double,%20org.apache.commons.math3.optim.ConvergenceChecker)">BrentOptimizer</a></strong>(double&nbsp;rel,
              double&nbsp;abs,
              <a href="../../../../../../org/apache/commons/math3/optim/ConvergenceChecker.html" title="interface in org.apache.commons.math3.optim">ConvergenceChecker</a>&lt;<a href="../../../../../../org/apache/commons/math3/optim/univariate/UnivariatePointValuePair.html" title="class in org.apache.commons.math3.optim.univariate">UnivariatePointValuePair</a>&gt;&nbsp;checker)</code>
<div class="block">The arguments are used implement the original stopping criterion
 of Brent's algorithm.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="../../../../../../org/apache/commons/math3/optim/univariate/UnivariatePointValuePair.html" title="class in org.apache.commons.math3.optim.univariate">UnivariatePointValuePair</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/commons/math3/optim/univariate/BrentOptimizer.html#doOptimize()">doOptimize</a></strong>()</code>
<div class="block">Performs the bulk of the optimization algorithm.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_org.apache.commons.math3.optim.univariate.UnivariateOptimizer">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.commons.math3.optim.univariate.<a href="../../../../../../org/apache/commons/math3/optim/univariate/UnivariateOptimizer.html" title="class in org.apache.commons.math3.optim.univariate">UnivariateOptimizer</a></h3>
<code><a href="../../../../../../org/apache/commons/math3/optim/univariate/UnivariateOptimizer.html#computeObjectiveValue(double)">computeObjectiveValue</a>, <a href="../../../../../../org/apache/commons/math3/optim/univariate/UnivariateOptimizer.html#getGoalType()">getGoalType</a>, <a href="../../../../../../org/apache/commons/math3/optim/univariate/UnivariateOptimizer.html#getMax()">getMax</a>, <a href="../../../../../../org/apache/commons/math3/optim/univariate/UnivariateOptimizer.html#getMin()">getMin</a>, <a href="../../../../../../org/apache/commons/math3/optim/univariate/UnivariateOptimizer.html#getStartValue()">getStartValue</a>, <a href="../../../../../../org/apache/commons/math3/optim/univariate/UnivariateOptimizer.html#optimize(org.apache.commons.math3.optim.OptimizationData...)">optimize</a>, <a href="../../../../../../org/apache/commons/math3/optim/univariate/UnivariateOptimizer.html#parseOptimizationData(org.apache.commons.math3.optim.OptimizationData...)">parseOptimizationData</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_org.apache.commons.math3.optim.BaseOptimizer">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.commons.math3.optim.<a href="../../../../../../org/apache/commons/math3/optim/BaseOptimizer.html" title="class in org.apache.commons.math3.optim">BaseOptimizer</a></h3>
<code><a href="../../../../../../org/apache/commons/math3/optim/BaseOptimizer.html#getConvergenceChecker()">getConvergenceChecker</a>, <a href="../../../../../../org/apache/commons/math3/optim/BaseOptimizer.html#getEvaluations()">getEvaluations</a>, <a href="../../../../../../org/apache/commons/math3/optim/BaseOptimizer.html#getIterations()">getIterations</a>, <a href="../../../../../../org/apache/commons/math3/optim/BaseOptimizer.html#getMaxEvaluations()">getMaxEvaluations</a>, <a href="../../../../../../org/apache/commons/math3/optim/BaseOptimizer.html#getMaxIterations()">getMaxIterations</a>, <a href="../../../../../../org/apache/commons/math3/optim/BaseOptimizer.html#incrementEvaluationCount()">incrementEvaluationCount</a>, <a href="../../../../../../org/apache/commons/math3/optim/BaseOptimizer.html#incrementIterationCount()">incrementIterationCount</a>, <a href="../../../../../../org/apache/commons/math3/optim/BaseOptimizer.html#optimize()">optimize</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long,%20int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a name="BrentOptimizer(double, double, org.apache.commons.math3.optim.ConvergenceChecker)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>BrentOptimizer</h4>
<pre>public&nbsp;BrentOptimizer(double&nbsp;rel,
              double&nbsp;abs,
              <a href="../../../../../../org/apache/commons/math3/optim/ConvergenceChecker.html" title="interface in org.apache.commons.math3.optim">ConvergenceChecker</a>&lt;<a href="../../../../../../org/apache/commons/math3/optim/univariate/UnivariatePointValuePair.html" title="class in org.apache.commons.math3.optim.univariate">UnivariatePointValuePair</a>&gt;&nbsp;checker)</pre>
<div class="block">The arguments are used implement the original stopping criterion
 of Brent's algorithm.
 <code>abs</code> and <code>rel</code> define a tolerance
 <code>tol = rel |x| + abs</code>. <code>rel</code> should be no smaller than
 <em>2 macheps</em> and preferably not much less than <em>sqrt(macheps)</em>,
 where <em>macheps</em> is the relative machine precision. <code>abs</code> must
 be positive.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>rel</code> - Relative threshold.</dd><dd><code>abs</code> - Absolute threshold.</dd><dd><code>checker</code> - Additional, user-defined, convergence checking
 procedure.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if <code>abs &lt;= 0</code>.</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NumberIsTooSmallException.html" title="class in org.apache.commons.math3.exception">NumberIsTooSmallException</a></code> - if <code>rel &lt; 2 * Math.ulp(1d)</code>.</dd></dl>
</li>
</ul>
<a name="BrentOptimizer(double, double)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>BrentOptimizer</h4>
<pre>public&nbsp;BrentOptimizer(double&nbsp;rel,
              double&nbsp;abs)</pre>
<div class="block">The arguments are used for implementing the original stopping criterion
 of Brent's algorithm.
 <code>abs</code> and <code>rel</code> define a tolerance
 <code>tol = rel |x| + abs</code>. <code>rel</code> should be no smaller than
 <em>2 macheps</em> and preferably not much less than <em>sqrt(macheps)</em>,
 where <em>macheps</em> is the relative machine precision. <code>abs</code> must
 be positive.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>rel</code> - Relative threshold.</dd><dd><code>abs</code> - Absolute threshold.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if <code>abs &lt;= 0</code>.</dd>
<dd><code><a href="../../../../../../org/apache/commons/math3/exception/NumberIsTooSmallException.html" title="class in org.apache.commons.math3.exception">NumberIsTooSmallException</a></code> - if <code>rel &lt; 2 * Math.ulp(1d)</code>.</dd></dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="doOptimize()">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>doOptimize</h4>
<pre>protected&nbsp;<a href="../../../../../../org/apache/commons/math3/optim/univariate/UnivariatePointValuePair.html" title="class in org.apache.commons.math3.optim.univariate">UnivariatePointValuePair</a>&nbsp;doOptimize()</pre>
<div class="block">Performs the bulk of the optimization algorithm.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/commons/math3/optim/BaseOptimizer.html#doOptimize()">doOptimize</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/commons/math3/optim/BaseOptimizer.html" title="class in org.apache.commons.math3.optim">BaseOptimizer</a>&lt;<a href="../../../../../../org/apache/commons/math3/optim/univariate/UnivariatePointValuePair.html" title="class in org.apache.commons.math3.optim.univariate">UnivariatePointValuePair</a>&gt;</code></dd>
<dt><span class="strong">Returns:</span></dt><dd>the point/value pair giving the optimal value of the
 objective function.</dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!--   -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/BrentOptimizer.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/commons/math3/optim/univariate/BracketFinder.html" title="class in org.apache.commons.math3.optim.univariate"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../../org/apache/commons/math3/optim/univariate/MultiStartUnivariateOptimizer.html" title="class in org.apache.commons.math3.optim.univariate"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/commons/math3/optim/univariate/BrentOptimizer.html" target="_top">Frames</a></li>
<li><a href="BrentOptimizer.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#fields_inherited_from_class_org.apache.commons.math3.optim.BaseOptimizer">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2003&#x2013;2016 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>
